iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0

二進位

傳統上,電腦在傳輸訊息都是使用二進位,而二進位在加法與乘法有以下特性;
https://ithelp.ithome.com.tw/upload/images/20231008/20137394FII2IWgNty.png
https://ithelp.ithome.com.tw/upload/images/20231008/201373946bHLM36Stg.png
也就是說1+1=0,1+0=1,1x1=1。
在線性代數上,這樣的二進位字元被標記為https://ithelp.ithome.com.tw/upload/images/20231008/20137394600iFgeBjz.png

假設https://ithelp.ithome.com.tw/upload/images/20231008/20137394yYcYaRmkxh.png
https://ithelp.ithome.com.tw/upload/images/20231008/20137394jfyxI2Zu9u.png
https://ithelp.ithome.com.tw/upload/images/20231008/20137394tLfBIXdy5y.png
然後
https://ithelp.ithome.com.tw/upload/images/20231008/20137394Vt5knx8RRF.png
而在二進位上建立的m個維度的向量稱為https://ithelp.ithome.com.tw/upload/images/20231008/20137394liHQPujs35.png
以下程式碼可以用來練習上面的內容

import numpy as np

print('(1 + 1) % 2 = ', (1 + 1) % 2)
print('')

# declare your vectors and matrices as numpy.array
# with a data-type of int, rather than the default
# type of float
M = np.array([[1, 0], [1,1]], dtype=int)
v = np.array([1, 1], dtype=int)
print('M = \n', M)
print('')

# if you add things as
print('M + M =\n', M+M, 'incorrect! 2 is not part of our number system.')
# you will get the wrong answer. '2' is not part of our number system.

print('')
# Instead mod everything 2. This is done with '% 2' in python
print('(M + M) % 2 =\n', (M+M) % 2, 'correct')
# The parenthesis in (M+M) % 2 are important

print('')
print('v = ', v)
# Remember that in numpy matrix multiplication is done using the @ symbol
print('M@v = ', M@v, 'incorrect')
print('M@v % 2 = ', M@v % 2, 'correct')

Classical linear codes

根據之前的有噪音版本的通訊圖來說,通訊過程的資訊都是以位元串的形式呈現,因此可以視為基於二進位的向量場

訊息空間

第一個向量欄位是包含訊息的向量欄位。對於我們將要研究的代碼類型,訊息的長度是一個固定的數字,我們將其表示為 𝑘 。如果要傳送的訊息較長,我們會將其分成長度塊 𝑘 ,然後將每個區塊視為自己的獨立訊息。在重複程式碼範例中,區塊的大小為 1
https://ithelp.ithome.com.tw/upload/images/20231008/201373946gDjcD2NXB.png
並且我們有以下定義

需要保護的資訊是一個長度為位元的字串 𝑘 ,每個這樣的字串稱為一條訊息。
訊息空間是向量空間 https://chart.googleapis.com/chart?cht=tx&chl=2%5Ek 可能的消息。此向量空間表示為 https://ithelp.ithome.com.tw/upload/images/20231008/20137394UKYfgJ2doF.png

程式碼空間

與重複碼一樣,對於線性碼,每個訊息在傳輸之前都會轉換為更長的位元串。這個較長的位元串稱為碼字,從訊息到碼字(codeword)的轉換稱為對訊息進行編碼。

訊息被轉換或編碼為碼字,碼字是長度為位的字串 𝑛

碼字有長度 𝑛 。有 https://chart.googleapis.com/chart?cht=tx&chl=2%5En 長度的字串 𝑛 ,但只有 https://chart.googleapis.com/chart?cht=tx&chl=2%5Ek 有效碼字 - 每個可能的訊息都有一個。因此,這裡有兩個向量空間。

程式碼空間是一個 𝑛 維向量空間,標記https://chart.googleapis.com/chart?cht=tx&chl=F%5En_2 。我們要求 𝑛≥𝑘

代碼空間通常不帶空格。對於重複碼,碼空間由所有長度組成 𝑛 = 3 位元串
{000,001,010,011,100,101,110,111}.
第二個向量空間是實際包含有效碼字的碼空間的子空間。對於重複碼,這是兩個碼字 {000,111}

代碼C 是一個 𝑘維子空間 https://chart.googleapis.com/chart?cht=tx&chl=F%5En_2。緊湊地,我們可以寫 https://ithelp.ithome.com.tw/upload/images/20231008/20137394675i7d0HIQ.png

因此,程式碼只是有效代碼字所在的向量空間的名稱。三個空間的關係如下圖所示。
https://ithelp.ithome.com.tw/upload/images/20231008/20137394mh4mnNAKV3.png

參考資料:https://github.com/abdullahkhalids/qecft


上一篇
Day22->Repetition error correction
下一篇
Day24->Classical error correction 2
系列文
Womanium Global Quantum Project-Quantum Software&Hardware30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言